package algorithm.easy;

import jdk.nashorn.internal.ir.FunctionNode;

import java.util.ArrayList;
import java.util.List;

/**
 * @BelongsProject: LeetCode
 * @BelongsPackage: algorithm.easy
 * @Author: 江岸
 * @CreateTime: 2021-10-19 00:17
 * @Description: 定一个非负整数 numRows，生成「杨辉三角」的前 numRows 行。
 * <p>
 * 在「杨辉三角」中，每个数是它左上方和右上方的数的和。
 */
public class Generate118 {
    public static List<List<Integer>> res;
    static {
        res =  generate2(30);

    }

    public static List<List<Integer>> generate2(int numRows) {
        if (numRows== 1) return new ArrayList<List<Integer>>() {{
            add(new ArrayList<Integer>() {{
                add(1);
            }});
        }};
        List<List<Integer>> list = generate2(numRows - 1);
        List<Integer> pre = list.get(numRows - 2);
        ArrayList<Integer> cur = new ArrayList<>();
        cur.add(1);
        for (int i = 1; i < numRows - 1; i++) {
            cur.add(pre.get(i - 1)+pre.get(i));
        }
        cur.add(1);
        list.add(cur);
        return list;
    }

    public List<List<Integer>> generate(int numRows) {
        return res.subList(0,numRows);
    }
}
